package com.egghiro.j2se.game.scardbattle.controller.action.ai;

import com.egghiro.framework.j2se.game.core.SMath;
import com.egghiro.j2se.game.scardbattle.controller.action.actioncommand.ActionCommand;
import com.egghiro.j2se.game.scardbattle.model.character.GameCharacter;
import com.egghiro.j2se.game.scardbattle.model.character.monster.Monster;
import com.egghiro.j2se.game.scardbattle.param.Message;

public class RateMonsterAI extends MonsterAI {
    
    public RateMonsterAI(Monster monster){
        super(monster);
    }

    @Override
    public void act() {
        // TODO 一般状态的策略逻辑。如果某种怪不执行某种动作，只要让该类动作概率为0就行了
        // TODO 把攻击魔法等动作放进这里的话，逻辑自由度就会受影响
        // TODO ⇒命令模式。各个动作具体命令由怪物的类或者生成器来生成。这个类只负责决策，然后从命令列表中取出命令并执行
        // TODO 
        // 1～10までの乱数を生成
        int actNum = SMath.nextInt(1, 10);
        int monsterAttackPoint = 0;
        GameCharacter target = monster.target(); // TODO 选定目标应该根据策略(接下来的具体动作)来进行。

        // 通常攻撃
        monsterAttackPoint = monster.attack(target);
        System.out.print(monster.getName() + Message.MSG_ATTACK_START);
        System.out.println(monsterAttackPoint + Message.MSG_MONSTER_ATTACK_END);
    }

    @Override
    public void appendActionCommand(ActionCommand actionCommand) {
        // TODO Auto-generated method stub
        
        // TODO コマンド自体に確率を持たせる？それともこのメソッドの引数に確率を持たせて、AIで管理する?
        
    }

}
